﻿<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>

    <h3><strong>QQ登录</strong></h3>
    <ul>
        <li>QQ方布置，参考：http://connect.qq.com/intro/login/jssdk-demo</li>
        <li>本地方案：<ul>
            <li>在/Log/On页面使用JavaScript，创建HiddenInput，将以下数据回发到服务器：<ul>
                <li>OpenId：作为用户的唯一标记</li>
                <li>nickname、gender、address等：作为Profile数据</li>
                </ul>
            </li>
            <li>服务器端使用/Log/QQ（不是/Log/On）接受客户端数据：<ul>
                <li>生成一个未注册用户</li>
                <li>为该用户创建Profile</li>
                <li>新生成用户“模拟”登陆</li>
                <li>页面重定向到“之前”页面</li>
                </ul>
            </li>
            </ul>
        </li>
        <li>原则：<ul>
            <li>对服务器端而言：<ul>
                <li>我们使用OpenId的目的，只是为了从QQ获取该用户的信息</li>
                <li>得到一个OpenId，这只是一个身份标识符，和通过注册获得的UserId一样，不具有“证据”作用</li>
                <li>对客户端而言：证明用户合法身份的还是我们自己生成的AuthCode</li>
                <li>对服务器而言：需要使用OpenId和AccessCode向QQ求证</li>
                </ul>
            </li>
            </ul>
        </li>
    </ul>
    <h3>账号绑定</h3>
    <ul>
        <li>参考：<a href="http://wiki.open.qq.com/wiki/【QQ登录】帐号绑定的说明">【QQ登录】帐号绑定的说明</a></li>
        <li><a href="http://xui.ptlogin2.qq.com/cgi-bin/qlogin">检测QQ用户是否已登录的页面</a></li>
        <li>用户通过QQ登录</li>
        <li>系统检测该用户是否有注册信息，如果没有：提示可以填写。这时用户可以选择：<ul>
            <li>新填写一个注册信息</li>
            <li>绑定到一个已注册用户</li>
            </ul>
        </li>
        <li>但无论如何，都要填写用户名和密码，如果：<ul>
            <li>新注册：数据库插入用户名和密码字段即可</li>
            <li>绑定：<ul>
                <li>验证用户名密码，正确后：</li>
                <li>将其信息复制到原有用户名密码用户</li>
                <li>删除根据QQ登录生成的用户</li>
                </ul>
            </li>
            </ul>
        </li>
        <li>如果，用户已经同时使用QQ用户和注册用户，问题就复杂了，需要检索全数据库：<ul>
            <li>发布的目标</li>
            <li>监督的目标</li>
            <li>我的留言</li>
            <li>给我的留言</li>
            </ul>
        </li>
        <li>所以，在首次QQ登录时，一定要特别提醒！</li>
    </ul>

</body>
</html>
